package com.easy.controller;

import com.easy.service.FruitService;
import com.easy.util.ImageUtil;
import com.easy.util.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.Map;

@RestController
@RequestMapping("/upload")
public class UploadController {
    @Autowired
    private FruitService fruitService;

    // 上传图片接口，接收 fruitId 和文件
    @RequestMapping("/file")
    public Result upload(@RequestParam("file") MultipartFile file, @RequestParam(value = "fruitId", required = false) Integer fruitId) {
        try {
            // 获取文件输入流
            InputStream is = file.getInputStream();
            String fileName = file.getOriginalFilename();

            // 上传图片到 OSS
            String newFileName = ImageUtil.uploadImage(is, fileName);

            // 更新水果信息中的图片 URL
            //URL（统一资源定位符）是因特网中的唯一资源的地址。它是浏览器用于检索已发布资源（例如 HTML 页面、CSS 文档、图像等）的关键机制之一。
            if(fruitId != null) {
                fruitService.updateImageUrl(fruitId, newFileName);
            }

            return Result.success("图片上传成功", newFileName);
        } catch (IOException e) {
            throw new RuntimeException("图片上传失败：" + e.getMessage());
        }
    }

    // 删除图片接口
    // UploadController.java 的 deleteFile 方法
    @PostMapping("/delete-file")
    public Result deleteFile(@RequestBody Map<String, String> params) {
        try {
            String imgUrl = params.get("imgUrl");
            System.out.println("收到删除请求，imgUrl：" + imgUrl); // 打印前端传递的URL

            // 校验URL是否为空
            if (imgUrl == null || imgUrl.isEmpty()) {
                System.out.println("删除失败：imgUrl为空");
                return Result.error("图片URL不能为空");
            }

            // 解析OSS文件名
            String bucketName = ImageUtil.getBucketName();
            String endpoint = ImageUtil.getEndpoint();
            String[] urlParts = imgUrl.split(bucketName + "\\." + endpoint + "/");
            System.out.println("解析后的urlParts长度：" + urlParts.length); // 应≥2

            if (urlParts.length < 2) {
                System.out.println("删除失败：无效的imgUrl，无法解析文件名");
                return Result.error("无效的图片URL");
            }
            String fileName = urlParts[1];
            System.out.println("解析出的OSS文件名：" + fileName); // 应为"fruit/xxx.jpg"

            // 执行删除
            ImageUtil.deleteImage(fileName);
            System.out.println("OSS文件删除成功：" + fileName);
            return Result.success("删除成功");

        } catch (Exception e) {
            System.out.println("删除异常：" + e.getMessage());
            e.printStackTrace();
            return Result.error("删除失败：" + e.getMessage());
        }
    }



}
